﻿Array.prototype.removeAt = function (from, to) {
    var rest = this.slice((to || from) + 1 || this.length);
    this.length = from < 0 ? this.length + from : from;
    return this.push.apply(this, rest);
};

/**
* 从对象数组中删除属性为objPropery，值为objValue元素的对象

* @param String objPropery 对象的属性

* @param String objPropery 对象的值

* @return Array 过滤后数组

*/

Array.prototype.remove = function remove(objPropery, objValue) {

    return $.grep(this, function (cur, i) {

        return cur[objPropery] != objValue;

    });

}

/**

* 从对象数组中获取属性为objPropery，值为objValue元素的对象

* @param Array arrPerson 数组对象

* @param String objPropery 对象的属性

* @param String objPropery 对象的值

* @return Array 过滤后的数组

*/

function get(arrPerson, objPropery, objValue) {

    return $.grep(arrPerson, function (cur, i) {

        return cur[objPropery] == objValue;

    });

}
function RegularManager(strHtml) {
    ControlArray = [];
    var regExp = /<select[^>]*>([\s\S]*?)<\/select>/gi;
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?checkbox[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?radio[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?text[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?hidden[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?date[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?combox[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, ControlArray, strHtml);
    regExp = /<textarea[^>]*>([\s\S]*?)<\/textarea>/gi;
    ControlRegular(regExp, ControlArray, strHtml);


    _SelectArray = [];
    var regExp = /<select[^>]*>([\s\S]*?)<\/select>/gi;
    ControlRegular(regExp, _SelectArray, strHtml);
    regExp = new RegExp("<input((?!type).)*type=[\"']?combox[\"']?[^>]*[/]?>", "ig");
    ControlRegular(regExp, _SelectArray, strHtml);


}


function ControlRegular(_RegExp, _ControlArray, _StrHtml) {
    var matchArray = _StrHtml.match(_RegExp);
    if (matchArray) {
        for (var i = 0; i < matchArray.length; i++) {
            var str_temp = matchArray[i].toString();
            var reg = new RegExp("id=\"(.*?)\"", "ig");
            var matchArray_temp = str_temp.match(reg);
            if (matchArray_temp != null) {
                var IDValue = matchArray_temp.toString();
                var idArray_temp = IDValue.split('=')
                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
                _ControlArray.push(idname);
            }
        }
    }
}

//function FieldDataSourceRegular(strHtml) {
//    _SelectArray = [];
//    //对script里面function函数的处理
//    var regExp = /<select[^>]*>([\s\S]*?)<\/select>/gi;
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp[0].toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');

//                _SelectArray.push(idname);
//            }
//        }
//    }
//}







////复选框
//function CheckboxRegular(strHtml) {
//    _CheckboxArray = [];
//    //对script里面function函数的处理
//    var regExp = new RegExp("<input((?!type).)*type=[\"']?checkbox[\"']?[^>]*[/]?>", "ig");
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp.toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
//                _RadioArray.push(idname);
//            }
//        }
//    }
//}

////单选框
//function RadioRegular(strHtml) {
//    _RadioArray = [];
//    //对script里面function函数的处理
//    var regExp = new RegExp("<input((?!type).)*type=[\"']?radio[\"']?[^>]*[/]?>", "ig");
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp.toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
//                _RadioArray.push(idname);
//            }
//        }
//    }
//}
////文本框
//function TextRegular(strHtml) {
//    _TextArray = [];
//    //对script里面function函数的处理
//    var regExp = new RegExp("<input((?!type).)*type=[\"']?text[\"']?[^>]*[/]?>", "ig");
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//          var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp.toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
//                _TextArray.push(idname);
//            }
//        }
//    }
//}
////隐藏控件
//function HiddenRegular(strHtml) {
//    _HiddenArray = [];
//    //对script里面function函数的处理
//    var regExp = new RegExp("<input((?!type).)*type=[\"']?hidden[\"']?[^>]*[/]?>", "ig");
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp.toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
//                _HiddenArray.push(idname);
//            }
//        }
//    }
//}
////日期控件
//function DateRegular(strHtml) {
//    _DateArray = [];
//    //对script里面function函数的处理
//    var regExp = new RegExp("<input((?!type).)*type=[\"']?date[\"']?[^>]*[/]?>", "ig");
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp.toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
//                _DateArray.push(idname);
//            }
//        }
//    }
//} 
////Combox控件
//function ComboxRegular(strHtml) {
//    //对script里面function函数的处理
//    var regExp = new RegExp("<input((?!type).)*type=[\"']?combox[\"']?[^>]*[/]?>", "ig");
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp.toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');
//                _SelectArray.push(idname);
//            }
//        }
//    }
//}
////多行文本框
//function TextareaRegular(strHtml) {
//    _TextareaArray = [];
//    //对script里面function函数的处理

//    var regExp = /<textarea[^>]*>([\s\S]*?)<\/textarea>/gi;
//    var matchArray = strHtml.match(regExp);
//    if (matchArray) {
//        for (var i = 0; i < matchArray.length; i++) {
//            var str_temp = matchArray[i].toString();
//            var reg = new RegExp("id=\"(.*?)\"", "ig");
//            var matchArray_temp = str_temp.match(reg);
//            if (matchArray_temp != null) {
//                var IDValue = matchArray_temp[0].toString();
//                var idArray_temp = IDValue.split('=')
//                var idname = idArray_temp[1].replace(/^\"|\"$/g, '');

//                _TextareaArray.push(idname);
//            }
//        }
//    }
//}
function NewGuid() {
    var sGuid = '';
    for (var i = 1; i <= 32; i++) {
        var nNum = 0;
        nNum = parseInt(Math.random() * 16);
        sGuid += nNum.toString(16);
        if (i == 8 || i == 12 || i == 16 || i == 20) sGuid += '-';
    }
    return sGuid.toUpperCase();
}

var Query = (function (query) {
    function _buildUrl(url, key, value) {
        var first = "?";
        if (url.indexOf("?") > -1) {
            first = "&"
        }
        return url + first + key + "=" + value
    }

    query.mergeParams = function (params, existing) {
        var result = existing;
        for (var i = 0; i < existing.length; i++) {
            for (var j = 0; j < params.length; j++) {
                var oldKey = existing[i].key;
                var newKey = params[j].key;
                if (oldKey == newKey) {
                    result[i].value = params[j].value;
                    params[j].value = null
                }
            }
        }
        for (var j = 0; j < params.length; j++) {
            if (params[j].value != null) {
                result[result.length] = params[j]
            }
        }
        return result
    };
    query.execute = function (url, limit, start, keywords, params, callback, append) {
        url = url + keywords;
        if (limit) {
            url = _buildUrl(url, "limit", limit)
        }
        if (start) {
            url = _buildUrl(url, "start", start)
        }
        if (params) {
            for (var i = 0; i < params.length; i++) {
                if (params[i].value != null) {
                    url = _buildUrl(url, params[i].key, params[i].value)
                }
            }
        }
        url = _buildUrl(url, "callback", "");
        $.getJSON(url,
        function (data) {
            callback(data, append)
        })
    };
    query.execute = function (url, params, callback, append) {
        var strParams = '';
        if (params) {
            strParams = $.toJSON(params);
        }
        $.ajax({
            type: "POST",
            url: url, //获取主表信息
            data: strParams,    
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            async: false,
            success: function (data) {
                callback(data.d, append);
            },
            error: function (err) {
                alert(err.responseText + "err");
            }
        });

    };
    query.hasKey = function (params, key) {
        if (params) {
            for (var i = 0; i < params.length; i++) {
                if (params[i].key == key) {
                    if (params[i].value != null) {
                        return true
                    }
                }
            }
        }
        return false
    };

    query.load = function (url, callback) {
        url = _buildUrl(url, "callback", "");
        $.getJSON(url, callback)
    };
    return query
})(Query || {});
